home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / sox.zip / LIBST.H < prev    next >
C/C++ Source or Header  |  1992-06-15  |  3KB  |  70 lines

  1. /* libst.h - include file for portable sound tools library
  2. **
  3. ** Copyright (C) 1989 by Jef Poskanzer.
  4. **
  5. ** Permission to use, copy, modify, and distribute this software and its
  6. ** documentation for any purpose and without fee is hereby granted, provided
  7. ** that the above copyright notice appear in all copies and that both that
  8. ** copyright notice and this permission notice appear in supporting
  9. ** documentation.  This software is provided "as is" without express or
  10. ** implied warranty.
  11. */
  12.  
  13. #define SAMPLES_PER_SECOND 8192
  14.  
  15. #define MINLIN -32768
  16. #define MAXLIN 32767
  17. #define LINCLIP(x) do { if ( x < MINLIN ) x = MINLIN ; else if ( x > MAXLIN ) x = MAXLIN; } while ( 0 )
  18.  
  19. unsigned char st_linear_to_ulaw( /* int sample */ );
  20. int st_ulaw_to_linear_slow( /* unsigned char ulawbyte */ );
  21.  
  22. /*
  23. ** This macro converts from ulaw to 16 bit linear, faster.
  24. **
  25. ** Jef Poskanzer
  26. ** 23 October 1989
  27. **
  28. ** Input: 8 bit ulaw sample
  29. ** Output: signed 16 bit linear sample
  30. */
  31. #define st_ulaw_to_linear(ulawbyte) ulaw_table[ulawbyte]
  32.  
  33. static int ulaw_table[256] = {
  34.     -32124, -31100, -30076, -29052, -28028, -27004, -25980, -24956,
  35.     -23932, -22908, -21884, -20860, -19836, -18812, -17788, -16764,
  36.     -15996, -15484, -14972, -14460, -13948, -13436, -12924, -12412,
  37.     -11900, -11388, -10876, -10364,  -9852,  -9340,  -8828,  -8316,
  38.      -7932,  -7676,  -7420,  -7164,  -6908,  -6652,  -6396,  -6140,
  39.      -5884,  -5628,  -5372,  -5116,  -4860,  -4604,  -4348,  -4092,
  40.      -3900,  -3772,  -3644,  -3516,  -3388,  -3260,  -3132,  -3004,
  41.      -2876,  -2748,  -2620,  -2492,  -2364,  -2236,  -2108,  -1980,
  42.      -1884,  -1820,  -1756,  -1692,  -1628,  -1564,  -1500,  -1436,
  43.      -1372,  -1308,  -1244,  -1180,  -1116,  -1052,   -988,   -924,
  44.       -876,   -844,   -812,   -780,   -748,   -716,   -684,   -652,
  45.       -620,   -588,   -556,   -524,   -492,   -460,   -428,   -396,
  46.       -372,   -356,   -340,   -324,   -308,   -292,   -276,   -260,
  47.       -244,   -228,   -212,   -196,   -180,   -164,   -148,   -132,
  48.       -120,   -112,   -104,    -96,    -88,    -80,    -72,    -64,
  49.        -56,    -48,    -40,    -32,    -24,    -16,     -8,      0,
  50.      32124,  31100,  30076,  29052,  28028,  27004,  25980,  24956,
  51.      23932,  22908,  21884,  20860,  19836,  18812,  17788,  16764,
  52.      15996,  15484,  14972,  14460,  13948,  13436,  12924,  12412,
  53.      11900,  11388,  10876,  10364,   9852,   9340,   8828,   8316,
  54.       7932,   7676,   7420,   7164,   6908,   6652,   6396,   6140,
  55.       5884,   5628,   5372,   5116,   4860,   4604,   4348,   4092,
  56.       3900,   3772,   3644,   3516,   3388,   3260,   3132,   3004,
  57.       2876,   2748,   2620,   2492,   2364,   2236,   2108,   1980,
  58.       1884,   1820,   1756,   1692,   1628,   1564,   1500,   1436,
  59.       1372,   1308,   1244,   1180,   1116,   1052,    988,    924,
  60.        876,    844,    812,    780,    748,    716,    684,    652,
  61.        620,    588,    556,    524,    492,    460,    428,    396,
  62.        372,    356,    340,    324,    308,    292,    276,    260,
  63.        244,    228,    212,    196,    180,    164,    148,    132,
  64.        120,    112,    104,     96,     88,     80,     72,     64,
  65.     56,     48,     40,     32,     24,     16,      8,      0 };
  66.  
  67. #ifdef    USG
  68. #define    setbuffer(x,y,z)
  69. #endif
  70.